/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * BeheerMenu.java
 *
 * Created on 1-jan-2010, 13:23:03
 */

package registratiesysteem;

import java.util.Calendar;
import java.util.GregorianCalendar;
//Wordt gebruikt in de methode om spaties uit Strings te halen
import java.util.StringTokenizer;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import java.awt.Color;

/**
 *
 * @author Martin
 */
class BeheerMenu extends javax.swing.JFrame {

    private final int SPEELGOED_CODE_LENGTH = 4;
    final static int OPRICHTJAAR = 2003;
    private boolean busy;

    // Een overload van de constructor die een verwijzing naar het hoofdmenu
    // meekrijgt.
    BeheerMenu(Hoofdmenu hetParentMenu, Database databaseConnectie) {
        initComponents();
        parentMenu = hetParentMenu;
        this.databaseConnectie = databaseConnectie;
        databaseConnectie.connect();
    }

    // Initialisatie methode die de tekst in het beheermenu aanpast op basis
    // van welke functie is gekozen in het hoofdmenu. 
    void initialiseerBeheerMenu(Hoofdmenu.BeheerObject hetSoortObject) {
        soortObject = hetSoortObject;
        switch(soortObject) {
            case SPEELGOED:
                jLabelMenuTitel.setText("Beheer speelgoed");
                jButtonToevoegen.setText("Speelgoed toevoegen");
                jButtonWijzigen.setText("Speelgoed wijzigen");
                jButtonVerwijderen.setText("Speelgoed verwijderen");
                jButtonVerwijderen.setVisible(true);
               
                break;
            case LEDEN:
                jLabelMenuTitel.setText("Beheer leden");
                jButtonToevoegen.setText("Lid toevoegen");
                jButtonWijzigen.setText("Lid wijzigen");
                jButtonVerwijderen.setText("Lid verwijderen");
                jButtonVerwijderen.setVisible(true);
                
                break;
            case UITLENINGEN:
                jLabelMenuTitel.setText("Beheer uitleningen");
                jButtonToevoegen.setText("Uitlening toevoegen");
                jButtonWijzigen.setText("Uitlening wijzigen");
                jButtonVerwijderen.setText("Uitlening verwijderen");
                jButtonVerwijderen.setVisible(true);
               
                break;
            case RESERVEONDERDELEN:
                jLabelMenuTitel.setText("Beheer reserve onderdelen");
                jButtonToevoegen.setText("onderdeel toevoegen");
                jButtonWijzigen.setText("onderdeel wijzigen");
                jButtonVerwijderen.setText("onderdeel verwijderen");
                jButtonVerwijderen.setVisible(true);
                
                break;
            case OVERZICHTEN:
                jLabelMenuTitel.setText("Toon overzichten");
                jButtonToevoegen.setText("Overzicht uitleningen per speelgoed");
                jButtonWijzigen.setText("Overzicht uitleningen per lid");
                jButtonVerwijderen.setVisible(false);
                
        }
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jButtonNaarHoofdmenu = new javax.swing.JButton();
        jSeparator1 = new javax.swing.JSeparator();
        jLabelMenuTitel = new javax.swing.JLabel();
        jButtonToevoegen = new javax.swing.JButton();
        jButtonWijzigen = new javax.swing.JButton();
        jButtonVerwijderen = new javax.swing.JButton();
        jlStatusbar = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jButtonNaarHoofdmenu.setText("Naar het hoofdmenu");
        jButtonNaarHoofdmenu.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonNaarHoofdmenuActionPerformed(evt);
            }
        });

        jLabelMenuTitel.setFont(new java.awt.Font("Tahoma", 1, 24));
        jLabelMenuTitel.setText("Beheer ");

        jButtonToevoegen.setText("toevoegen");
        jButtonToevoegen.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonToevoegenActionPerformed(evt);
            }
        });

        jButtonWijzigen.setText("wijzigen");
        jButtonWijzigen.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonWijzigenActionPerformed(evt);
            }
        });

        jButtonVerwijderen.setText("verwijderen");
        jButtonVerwijderen.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonVerwijderenActionPerformed(evt);
            }
        });

        jlStatusbar.setBorder(javax.swing.BorderFactory.createEtchedBorder());

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jlStatusbar, javax.swing.GroupLayout.DEFAULT_SIZE, 390, Short.MAX_VALUE)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jButtonNaarHoofdmenu, javax.swing.GroupLayout.DEFAULT_SIZE, 370, Short.MAX_VALUE)
                .addContainerGap())
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jSeparator1, javax.swing.GroupLayout.DEFAULT_SIZE, 370, Short.MAX_VALUE)
                        .addContainerGap())
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
                            .addComponent(jLabelMenuTitel)
                            .addComponent(jButtonWijzigen, javax.swing.GroupLayout.DEFAULT_SIZE, 370, Short.MAX_VALUE)
                            .addComponent(jButtonVerwijderen, javax.swing.GroupLayout.DEFAULT_SIZE, 370, Short.MAX_VALUE))
                        .addGap(10, 10, 10))
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jButtonToevoegen, javax.swing.GroupLayout.DEFAULT_SIZE, 370, Short.MAX_VALUE)
                        .addContainerGap())))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabelMenuTitel)
                .addGap(18, 18, 18)
                .addComponent(jButtonToevoegen)
                .addGap(18, 18, 18)
                .addComponent(jButtonWijzigen)
                .addGap(18, 18, 18)
                .addComponent(jButtonVerwijderen)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 48, Short.MAX_VALUE)
                .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jButtonNaarHoofdmenu)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jlStatusbar, javax.swing.GroupLayout.PREFERRED_SIZE, 15, javax.swing.GroupLayout.PREFERRED_SIZE))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void jButtonNaarHoofdmenuActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonNaarHoofdmenuActionPerformed
        setStatusbarText(jlStatusbar, null, Color.BLACK);
        this.setVisible(false);
        parentMenu.setVisible(true);
}//GEN-LAST:event_jButtonNaarHoofdmenuActionPerformed

    private void jButtonToevoegenActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonToevoegenActionPerformed
        switch(soortObject) {
            case SPEELGOED:
                speelgoedInvoerScherm.initialiseerInvoerScherm(BewerkFunctie.TOEVOEGEN);
                speelgoedInvoerScherm.setLocationRelativeTo(null);
                speelgoedInvoerScherm.setVisible(true);
                break;
            case LEDEN:
                ledenInvoerScherm.initialiseerInvoerScherm(BewerkFunctie.TOEVOEGEN);
                ledenInvoerScherm.setLocationRelativeTo(null);
                ledenInvoerScherm.setVisible(true);
                break;
            case UITLENINGEN:
                uitleningenInvoerScherm.initialiseerInvoerScherm(BewerkFunctie.TOEVOEGEN);
                uitleningenInvoerScherm.setLocationRelativeTo(null);
                uitleningenInvoerScherm.setVisible(true);
                break;
            case OVERZICHTEN:
                uitleningenInvoerScherm.initialiseerInvoerScherm(BewerkFunctie.SPEELGOED_OVERZICHT);
                uitleningenInvoerScherm.setLocationRelativeTo(null);
                uitleningenInvoerScherm.setVisible(true);
                break;
            case RESERVEONDERDELEN:
                OnderdelenInvoerScherm.initialiseerInvoerScherm(BewerkFunctie.TOEVOEGEN);
                OnderdelenInvoerScherm.setLocationRelativeTo(null);
                OnderdelenInvoerScherm.setVisible(true);
        }
        setStatusbarText(jlStatusbar, null, Color.BLACK);
        this.setVisible(false); 
}//GEN-LAST:event_jButtonToevoegenActionPerformed

    private void jButtonWijzigenActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonWijzigenActionPerformed
        switch(soortObject) {
            case SPEELGOED:
                speelgoedInvoerScherm.initialiseerInvoerScherm(BewerkFunctie.WIJZIGEN);
                speelgoedInvoerScherm.setLocationRelativeTo(null);
                speelgoedInvoerScherm.setVisible(true);
                break;
            case LEDEN:
                ledenInvoerScherm.initialiseerInvoerScherm(BewerkFunctie.WIJZIGEN);
                ledenInvoerScherm.setLocationRelativeTo(null);
                ledenInvoerScherm.setVisible(true);
                break;
           case UITLENINGEN:
                uitleningenInvoerScherm.initialiseerInvoerScherm(BewerkFunctie.WIJZIGEN);
                uitleningenInvoerScherm.setLocationRelativeTo(null);
                uitleningenInvoerScherm.setVisible(true);
                break;
            case OVERZICHTEN:
                uitleningenInvoerScherm.initialiseerInvoerScherm(BewerkFunctie.LID_OVERZICHT);
                uitleningenInvoerScherm.setLocationRelativeTo(null);
                uitleningenInvoerScherm.setVisible(true);
                break;
            case RESERVEONDERDELEN:
                OnderdelenInvoerScherm.initialiseerInvoerScherm(BewerkFunctie.WIJZIGEN);
                OnderdelenInvoerScherm.setLocationRelativeTo(null);
                OnderdelenInvoerScherm.setVisible(true);
        }
        setStatusbarText(jlStatusbar, null, Color.BLACK);
        this.setVisible(false);
}//GEN-LAST:event_jButtonWijzigenActionPerformed

    private void jButtonVerwijderenActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonVerwijderenActionPerformed
        switch(soortObject) {
            case SPEELGOED:
                speelgoedInvoerScherm.initialiseerInvoerScherm(BewerkFunctie.VERWIJDEREN);
                speelgoedInvoerScherm.setLocationRelativeTo(null);
                speelgoedInvoerScherm.setVisible(true);
                break;
            case LEDEN:
                ledenInvoerScherm.initialiseerInvoerScherm(BewerkFunctie.VERWIJDEREN);
                ledenInvoerScherm.setLocationRelativeTo(null);
                ledenInvoerScherm.setVisible(true);
                break;
            case UITLENINGEN:
                uitleningenInvoerScherm.initialiseerInvoerScherm(BewerkFunctie.VERWIJDEREN);
                uitleningenInvoerScherm.setLocationRelativeTo(null);
                uitleningenInvoerScherm.setVisible(true);
                break;
            case RESERVEONDERDELEN:
                OnderdelenInvoerScherm.initialiseerInvoerScherm(BewerkFunctie.VERWIJDEREN);
                OnderdelenInvoerScherm.setLocationRelativeTo(null);
                OnderdelenInvoerScherm.setVisible(true);
        }
        setStatusbarText(jlStatusbar, null, Color.BLACK);
        this.setVisible(false);
}//GEN-LAST:event_jButtonVerwijderenActionPerformed

    void setStatusbarText(JLabel statusbar, String text, Color color) {
        statusbar.setForeground(color);
        statusbar.setText(text);
    }

    void setJaren(JComboBox jcbJaar, int maand)
    {
        int jaar = Calendar.getInstance().get(Calendar.YEAR);
        int i;

        jcbJaar.removeAllItems();
        jcbJaar.addItem("JAAR");
        if (jaar >= OPRICHTJAAR) {
            for (i = OPRICHTJAAR; i <= jaar; ++i)
                jcbJaar.addItem(Integer.toString(i));

            if (maand == 0)
                jcbJaar.addItem(Integer.toString(jaar + 1));
        }
    }

    void setDagen(JComboBox jcbDag, int dagen)
    {
        jcbDag.removeAllItems();
        jcbDag.addItem("DAG");
        for (int i = 0; i < dagen; ++i)
            jcbDag.addItem(Integer.toString(i + 1));
    }

    int getDagenInMaand(int maand, int jaar)
    {
        if (maand == 0 || maand == 2 || maand == 4 || maand == 6 || maand == 7 || maand == 9 || maand == 11)
            return 31;
        else if (maand == 3 || maand == 5 || maand == 8 || maand == 10)
            return 30;
        else if (new GregorianCalendar().isLeapYear(jaar))
            return 29;
        else
            return 28;
    }

    void setDatumVelden(JComboBox jcbDag, JComboBox jcbMaand, JComboBox jcbJaar)
    {
        /*
         * Deze functie is niet threadsafe
         * de busy mutex zorgt ervoor dat slechts een event tegelijk kan worden afgehandeld
         * Zonder de mutex gaat het onherroepelijk een keer fout
         */
        if (busy) return;
        busy = true;
        int dag = jcbDag.getSelectedIndex();
        int maand = jcbMaand.getSelectedIndex();
        int jaar = jcbJaar.getSelectedIndex();
        int itemCount;

        if (maand > 0)
        {
            setJaren(jcbJaar, maand - 1);
            itemCount = jcbJaar.getItemCount() - 1;
            if (jaar >= 0 && itemCount > jaar)
                jcbJaar.setSelectedIndex(jaar);
            else
            {
                jcbJaar.setSelectedIndex(itemCount);
                jaar = itemCount;
            }
            if (jaar > 0)
                setDagen(jcbDag, getDagenInMaand(maand - 1, Integer.parseInt((String)jcbJaar.getItemAt(jaar))));
            else
                setDagen(jcbDag, getDagenInMaand(maand - 1, Calendar.getInstance().get(Calendar.YEAR)));
            itemCount = jcbDag.getItemCount() - 1;
            if (itemCount > dag)
                jcbDag.setSelectedIndex(dag);
            else
                jcbDag.setSelectedIndex(itemCount);
        }
        busy = false;
    }

    void setDatumVandaag(JComboBox jcbDag, JComboBox jcbMaand, JComboBox jcbJaar) {
        Calendar c = Calendar.getInstance();
        int maand = c.get(Calendar.MONTH);
        int jaar = c.get(Calendar.YEAR);

        setDagen(jcbDag, getDagenInMaand(maand, jaar));
        jcbDag.setSelectedIndex(c.get(Calendar.DAY_OF_MONTH));
        setJaren(jcbJaar, maand);
        jcbJaar.setSelectedIndex(1 + jaar - OPRICHTJAAR);
        jcbMaand.setSelectedIndex(1 + maand);
    }

    void initDatumVelden(JComboBox jcbDag, JComboBox jcbMaand, JComboBox jcbJaar) {
        int jaar = Calendar.getInstance().get(Calendar.YEAR);

        jcbDag.addItem("DAG");
        for (int i = 0; i < 31; ++i)
            jcbDag.addItem(Integer.toString(i + 1));
        jcbMaand.addItem("MAAND");
        jcbMaand.addItem("januari");
        jcbMaand.addItem("februari");
        jcbMaand.addItem("maart");
        jcbMaand.addItem("april");
        jcbMaand.addItem("mei");
        jcbMaand.addItem("juni");
        jcbMaand.addItem("juli");
        jcbMaand.addItem("augustus");
        jcbMaand.addItem("september");
        jcbMaand.addItem("oktober");
        jcbMaand.addItem("november");
        jcbMaand.addItem("december");
        jcbJaar.addItem("JAAR");
        if (OPRICHTJAAR < jaar) {
        for (int i = OPRICHTJAAR; i <= jaar; ++i)
            jcbJaar.addItem(Integer.toString(i));
        }
        else {
        for (int i = jaar; i <= OPRICHTJAAR; ++i)
            jcbJaar.addItem(Integer.toString(i));
        }
    }

    String maakDatumString(JComboBox jcbDag, JComboBox jcbMaand, JComboBox jcbJaar) {
        String d, m, j;
        int dag = jcbDag.getSelectedIndex();
        int maand = jcbMaand.getSelectedIndex();
        int jaar;

        if (dag <= 0 || maand <= 0)
            return null;
        try {
            jaar = Integer.parseInt((String)jcbJaar.getSelectedItem());
        }
        catch(NumberFormatException e) {
            System.out.println(e.getMessage());
            return null;
        }
        d = Integer.toString(dag);
        m = Integer.toString(maand);
        j = Integer.toString(jaar);
        if (d.length() == 1)
            d = "0" + d;
        if (m.length() == 1)
            m = "0" + m;
        switch(j.length()) {
            case 1:
                j = "000" + j;
                break;
            case 2:
                j = "00" + j;
                break;
            case 3:
                j = "0" + j;
        }
        return j + "-" + m + "-" + d;
    }

    boolean isGeldigeSpeelgoedCode(String s)
    {
        int length = s.length();

        if (length <= 0)
        {
            return false;
        }
        else if (length > SPEELGOED_CODE_LENGTH)
        {
            return false;
        }
        for (int i = 0; i < length; ++i)
        {
            if (i == 0)
            {
                if (!Character.isLetter(s.charAt(i)))
                    return false;
            }
            else if (!Character.isDigit(s.charAt(i)))
                return false;
        }
        return true;
    }

    // Hier wordt een int omgezet naar een string en indien nodig aangevuld
    // met nullen tot vier karakters.
    public String lidNummerUitvullen(int hetGetal) {
        if(hetGetal < 10) {
            return "000" + hetGetal;
        } else if (hetGetal < 100) {
            return "00" + hetGetal;
        } else if (hetGetal < 1000) {
            return "0" + hetGetal;
        } else {
            return Integer.toString(hetGetal);
        }
    }

    public String speelgoedCodeUitvullen(int hetGetal) {
        if(hetGetal < 10) {
            return "00" + hetGetal;
        } else if (hetGetal < 100) {
            return "0" + hetGetal;
        } else {
            return Integer.toString(hetGetal);
        }
    }

    // Deze methode verwijderd spaties uit strings
    String verwijderSpaties(String deString) {
        StringTokenizer deStringTokenizer = new StringTokenizer(deString," ",false);
        String nieuweString = "";
        while (deStringTokenizer.hasMoreElements()) {
            nieuweString += deStringTokenizer.nextElement();
        }
        return nieuweString;
    }

    // Dit zijn diverse methoden die door de verschillende schermen gebruikt
    // worden om de invoer te controleren.

    // Controleer of een tekst alleen bestaat uit nummers
    boolean isTekstNumeriek(String deString) {
        try {
                // Probeer de tekst om te zetten naar een nummer
                Integer.parseInt(deString.trim());
            }
        catch (Exception e) {
            // Als het niet lukt om de tekst om te zetten naar een nummer
            // retourneer dan false
            return false;
            }
        // Als het wel lukt om de tekst om te zetten naar een nummer
        // retourneer dan true
        return true;
    }

    // Controleer of een string een bedrag is.
    public boolean isTekstEenBedrag(String deString) {
        char karakter;
        String deNieuweString="";
        for (int i = 0 ; i < deString.length() ; i++) {
            karakter = deString.charAt(i);
            if(karakter == ',')
                karakter = '.';
            deNieuweString = deNieuweString + karakter;
        }
        try {
            float flt=Float.parseFloat(deNieuweString);
        }
        catch (Exception e) {
            return false;
        }
        return true;
    }

    public float zetTekstOmInBedrag(String deString) {
        char karakter;
        String deNieuweString="";
        for (int i = 0 ; i < deString.length() ; i++) {
            karakter = deString.charAt(i);
            if(karakter == ',')
                karakter = '.';
            deNieuweString = deNieuweString + karakter;
        }
        return Float.parseFloat(deNieuweString);
    }

    // Controleer of een tekst ook nummers bevat
    boolean bevatTekstNummers(String deString) {
        char hetKarakter;
        // Loop alle letters in de string af
        for(int i = 0 ; i < deString.length() ; i++) {
            // Sla ieder karakter appart op in hetKarakter
            hetKarakter = deString.charAt(i);
            // Kijk of de ascii waarde van hetKarakter tussen 47 en 58 ligt
            // 48 is de ascii waarde van '0' en 57 is de ascii waarde van '9'
            if(hetKarakter > 47 && hetKarakter < 58) {
                return true;
            }
        }
        return false;
    }

    // Controller of de tekst een geldige postcode is
    String isGeldigePostcode(String deString) {
        // Controleer de lengte van de string, als deze groter is dan 7 of
        // kleiner is dan 6 kan het geen geldige Nederlandse postcode zijn
        if(deString.length() > 7 || deString.length() < 6) {
            return "De postcode heeft een verkeerde lengte.";
        }

        // Controleer of de postcode uit 7 karakters bestaan en verwijder de
        // spatie
        if(deString.length() == 7) {
            deString = this.verwijderSpaties(deString);
        }

        // Controleer of de postcode uit 6 karakters bestaat
        if(deString.length() == 6) {

            // Controleer of de eerste 4 karakters van de postcode cijfers zijn
            for(int i = 0 ; i < 4 ; i++) {
                if(deString.charAt(i) <= 47 || deString.charAt(i) >= 58) {
                    return "De eerste vier karakters van de postcode moeten " +
                            "cijfers zijn, voer een nieuwe postcode in.";
                }
            }

            //Controleer of het eerste cijfer een 0 is
            if(deString.charAt(0) == 48) {
                return "Het eerste getal in een postcode moet groter zijn dan " +
                        "nul, voer een nieuwe postcode in.";
            }

            // Controleer of het 5e en 6e karakter hoofdletters of kleineletters
            // zijn
            for(int i = 4 ; i <= 5 ; i++) {
                //hetKarakter = deString.charAt(i);
                if(!((deString.charAt(i) >= 65  && deString.charAt(i) <= 90) ||
                        (deString.charAt(i) >= 97 && deString.charAt(i) <= 122))) {
                    return "Het vijfde en zesde karakter in een postcode " +
                            "moeten letters zijn, geef een nieuwe postcode op.";
                // Indien het kleine letters zijn zet deze dan om naar
                // hoofdletters
                } else if (deString.charAt(i) >= 97 && deString.charAt(i) <= 122) {
                    deString = deString.toUpperCase();
                }
                return deString;
            }
        } else {
            return "Er is geen geldige postcode ingevoerd, " +
                    "geef een nieuwe postcode.";
        }
        return deString;
    }

    String isGeldigTelefoonnummer(String hetTelefoonnummer) {
        String telefoonnummerString = this.verwijderSpaties(hetTelefoonnummer);
        if(telefoonnummerString.length() > 10) {
            return "Het telefoonnummer is te lang, voer een nieuw telefoonnummer in";
        }
        if(telefoonnummerString.length() < 10) {
            return "Het telefoonnummer is te kort, voer een nieuw telefoonnummer in";
        }
        if(!this.isTekstNumeriek(telefoonnummerString)) {
            return "Het telefoonnummer mag alleen cijfers bevatten";
        }
        if(telefoonnummerString.charAt(0) != 48) {
            return "Het telefoonnummer moet met een 0 beginnen, voer een nieuw telefoonnummer in";
        }
        return telefoonnummerString;
    }


    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jButtonNaarHoofdmenu;
    private javax.swing.JButton jButtonToevoegen;
    private javax.swing.JButton jButtonVerwijderen;
    private javax.swing.JButton jButtonWijzigen;
    private javax.swing.JLabel jLabelMenuTitel;
    private javax.swing.JSeparator jSeparator1;
    javax.swing.JLabel jlStatusbar;
    // End of variables declaration//GEN-END:variables
    
    // Enumeratie voor de verschillende functies van ieder invoerscherm
    enum BewerkFunctie {
        TOEVOEGEN, WIJZIGEN, VERWIJDEREN, ZOEKEN, LID_OVERZICHT, SPEELGOED_OVERZICHT, LIDNUMMER, SPEELGOED_CODE, ONDERDEEL_CODE
    }

    // Hier wordt een verwijzing naar het hoofdmenu opgenomen zodat we vanuit 
    // dit menu terug kunnen keren naar het hoofdmenu
    private Hoofdmenu parentMenu;

    // Waarde die bepaald welk object wordt bewerkt (speelgoed, leden,
    // uitleningen of overzichten
    private Hoofdmenu.BeheerObject soortObject;

    // Een instantie van ieder type invoerscherm
    ZoekScherm zoekResultaten = new ZoekScherm(this);
    OverzichtenScherm overzichtenScherm = new OverzichtenScherm(this);
    private SpeelgoedInvoerScherm speelgoedInvoerScherm = new SpeelgoedInvoerScherm(this);
    private LedenInvoerScherm ledenInvoerScherm = new LedenInvoerScherm(this);
    private UitleningenInvoerScherm uitleningenInvoerScherm = new UitleningenInvoerScherm(this);
    private OnderdelenInvoerScherm OnderdelenInvoerScherm = new OnderdelenInvoerScherm(this);
    // Een koppeling naar de database
    Database databaseConnectie;
}
